課程名稱 |
編譯程式設計 Compiler Design |
開課學期 |
103-1 |
授課對象 |
電機資訊學院 資訊工程學系 |
授課教師 |
徐慰中 |
課號 |
CSIE3230 |
課程識別碼 |
902 39200 |
班次 |
|
學分 |
3 |
全/半年 |
半年 |
必/選修 |
選修 |
上課時間 |
星期四6,7,8(13:20~16:20) |
上課地點 |
資107 |
備註 |
限電資學院學生(含輔系、雙修生) 且 限學士班三年級以上 總人數上限:40人 |
Ceiba 課程網頁 |
http://ceiba.ntu.edu.tw/1031CSIE3230_compile |
課程簡介影片 |
|
核心能力關聯 |
核心能力與課程規劃關聯圖 |
課程大綱
|
為確保您我的權利,請尊重智慧財產權及不得非法影印
|
課程概述 |
Overview
Design of a simple compiler
Theory and practice of Scanning
Formal grammars and parsing
Top-down parsing
Bottom-up parsing
Syntax-directed compilation
Declaration processing and Symbol tables
Semantic analysis
Code generation
Program analysis and Optimization
|
課程目標 |
This course is an introduction to compiler design and development. Its focus is on the process and
techniques in constructing a compiler, including lexical analysis, parsing, symbol table manipulation, and code generation. The theory, techniques and algorithms associated with a compiler can be applied to a wide range of problems in software design and development. The goal of this course is to provide students with the essential theory and techniques in building a simple yet complete compiler. |
課程要求 |
|
預期每週課後學習時數 |
|
Office Hours |
|
指定閱讀 |
|
參考書目 |
A.V. Aho, M. Lam, R. Sethi, and J.D. Ullman
“Compilers: Principles, Techniques and Tools”
2nd edition, 2007
ISBN 0-321-48681-1
|
評量方式 (僅供參考) |
|
週次 |
日期 |
單元主題 |
Week 1 |
9/18 |
1) Course Organization
2) Chapter 1: Introduction |
Week 2 |
9/25 |
1) Chapter 1: Introduction
2) Chapter 2: A Simple Compiler |
Week 3 |
10/02 |
Chapter 2: A Simple Compiler |
Week 4 |
10/09 |
Chapter 3: Scanner |
Week 5 |
10/16 |
Chapter 3 and Quiz (1-3) |
Week 6 |
10/23 |
Chapter 4: Formal Grammar and Parsing |
Week 7 |
10/30 |
Chapter 5: Top-Down Parsing |
Week 8 |
11/06 |
Chapter 6: Bottom-Up Parsing
Chapter 7: Syntax Directed Translation
Quiz2 (Chapter 4-7) |
Week 9 |
11/13 |
Midterm Exam |
Week 10 |
11/20 |
Chapter 12: Runtime Support |
Week 11 |
11/27 |
Chapter 8: Declaration Processing and Symbol Table |
Week 12 |
12/04 |
Chapter 9: Semantic Analysis |
Week 13 |
12/11 |
Code Generation for ARM |
Week 14 |
12/18 |
Code Generation for Data Accesses and Simple Register Allocation |
Week 15 |
12/25 |
Code Generation for Control Structures |
Week 16 |
1/01 |
Holiday |
Week 17 |
1/08 |
Basic Code Optimizations: CSE, Register Allocation, Code Scheduling, Parallelization |
|